{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "37868ee2",
   "metadata": {
    "language_info": {
     "name": "polyglot-notebook"
    },
    "polyglot_notebook": {
     "kernelName": "csharp"
    }
   },
   "source": [
    "## HTTP Context\n",
    "\n",
    "This project illustrates how to access the HttpContext from tool calls. See the [README](../README.md) for more details.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "093a7d4f",
   "metadata": {},
   "source": [
    "### Examples\n",
    "\n",
    "The following request illustrates a tool call that retrieves the HTTP headers from the [HttpContext] using the [IHttpContextAccessor].\n",
    "\n",
    "The server implements two other tools, `get_request_info` and `get_user_claims`. You can modify the code below to call these tools as well,\n",
    "which illustrate how to access other parts of the [HttpContext].\n",
    "\n",
    "\n",
    "[HttpContext]: https://docs.microsoft.com/dotnet/api/microsoft.aspnetcore.http.httpcontext\n",
    "[IHttpContextAccessor]: https://docs.microsoft.com/dotnet/api/microsoft.aspnetcore.http.ihttpcontextaccessor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3324ec56",
   "metadata": {
    "language_info": {
     "name": "polyglot-notebook"
    },
    "polyglot_notebook": {
     "kernelName": "pwsh"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "  \"result\": {\n",
      "    \"content\": [\n",
      "      {\n",
      "        \"type\": \"text\",\n",
      "        \"text\": \"[]\"\n",
      "      }\n",
      "    ],\n",
      "    \"structuredContent\": {\n",
      "      \"result\": []\n",
      "    }\n",
      "  },\n",
      "  \"id\": 1,\n",
      "  \"jsonrpc\": \"2.0\"\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "curl -s -X POST http://localhost:3001 `\n",
    "-H \"ProtocolVersion: 2025-06-18\" `\n",
    "-H \"Accept: application/json, text/event-stream\" `\n",
    "-H \"Content-Type: application/json\" `\n",
    "-d '{\n",
    "    \"jsonrpc\": \"2.0\",\n",
    "    \"id\": 1,\n",
    "    \"method\": \"tools/call\",\n",
    "    \"params\": {\n",
    "        \"name\": \"get_user_claims\"\n",
    "    }\n",
    "}' | Where-Object { $_ -like \"data:*\" } | ForEach-Object { $_.Substring(5) } | jq"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".NET (C#)",
   "language": "C#",
   "name": ".net-csharp"
  },
  "language_info": {
   "name": "polyglot-notebook"
  },
  "polyglot_notebook": {
   "kernelInfo": {
    "defaultKernelName": "csharp",
    "items": [
     {
      "aliases": [],
      "languageName": "csharp",
      "name": "csharp"
     }
    ]
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
